技術問答
技術文章
iT 徵才
Tag
聊天室
2025 鐵人賽
登入/註冊
問答
文章
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
5
2
自我挑戰組
上班辦公室,下班讀書室:RISC-V / ARM64 體系結構編程與實踐
系列 第
5
篇
[鐵人賽] Day 5 蝸步-3
16th鐵人賽
ycliang
團隊
晶心壯士III: ALcHemist
2024-09-05 22:13:56
477 瀏覽
分享至
今日的行程:
辦公室:10:00 - 19:45
讀書室:20:30 - 22:00
正片開始
今日的記錄:
RISC-V 體系結構編程與實踐: Ch 1 基礎知識
mstatus.MPRV (Modified PRiVilege) 用來修改實際的權限層級 (effective privilege),我的理解是 load/store 指令作用的位址會根據這個 bit 來決定要不要做 VA PA 轉換。
MPRV == 0, load/store 指令作用的位址,使用的是當前權限層級的記憶體轉址和保護機制
MPRV == 1, load/store 指令作用的位址,使用是經過轉址以及保護的
實際使用的例子:
模擬 misaligned load/store
: 可以在 OpenSBI 專案中看到,想要讓不支援 misaligned load/store 的硬體,可以由軟體來模擬
如果不支援 misaligned load/store 的話,在 misaligned load/store 發生時,會產生 exception,進到 M-mode 的 trap handler,在判斷是 misaligned load/store 之後,可以透過設定 MPRV,來模擬 S-mode 下的記憶體存取行為。
lib/sbi/sbi_trap_ldst.c
: 模擬函數的實體
lib/sbi/sbi_unpriv.c
: inline asm 實作模擬函數的底層行為,有夠難看懂XDD,因為要去讀的記憶體會經過 translation 和 protection,還有可能會發生 exception,所以這邊做的事情是,自行實作一個小的 exception handler 來處理,如果沒發生 exception 就把讀到的值回傳回去,如果發生 exception (page fault, pmp access fault),就回傳 0,並且由 tinfo 來判斷是否有發生過 exception,來決定這個值可不可以用
除錯功能
: 經P同事指導XD,還可以在 OpenOCD 專案中看到,因為 debug 行為會在 D-mode 這個層級,是不會有記憶體轉址(translation)的行為,所以只能存取 PA;有了這個 MPRV,就也可以使用 VA 來做觀察了
src/target/riscv/riscv-013.c
總結
稍微有印象的是在 OpenSBI 裡面的實作,今天第一次知道原來有 debug 用途,驚喜驚喜~
留言
追蹤
檢舉
上一篇
[鐵人賽] Day 4 蝸步-2
下一篇
[鐵人賽] Day 6 New Extensions: Svvptc
系列文
上班辦公室,下班讀書室:RISC-V / ARM64 體系結構編程與實踐
共
30
篇
目錄
RSS系列文
訂閱系列文
5
人訂閱
26
# [鐵人賽] Day 26 ARM 第 13 章節 GIC-V2 (2)
27
[鐵人賽] Day 27 RISC-V 第 18 章節 Vector extension
28
[鐵人賽] Day 28 RISC-V 第 18 章 Vector Extension (2)
29
[鐵人賽] Day 29 RISC-V 第 18 章 Vector Extension (3)
30
[鐵人賽] Day 30 總結與回顧
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
403
組
團體組數
13
組
累計文章數
2925
篇
最後報名日
9/15
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
看更多
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
17th鐵人賽
windows
php
c#
windows server
linux
css
react
熱門問題
不知道網路紅隊的要去那加公司
更換FW後Public IP service無法使用
鼎新ERP欄位可修改預設值嗎
Ansible 連線主機的 port 不是 22 遇到的問題
備份映像檔
Outlook 寄件備份消失問題 (已解決)
請問有人遇過在lightsail上部屬fastapi失敗的案例?
aws ec2 檢查故障問題
IIS 管理員 連線功能不見
熱門回答
鼎新ERP欄位可修改預設值嗎
不知道網路紅隊的要去那加公司
Ansible 連線主機的 port 不是 22 遇到的問題
更換FW後Public IP service無法使用
備份映像檔
熱門文章
什麼是 Signal ?
第10天,No-Code 快速上線又省錢 / 原汁排骨湯 台北最好喝的排骨湯(台北萬華)| 30天滷肉飯
序: AI 加速編碼後,你該學什麼?
第11天,LibreOffice 更省錢 / 司機俱樂部 宵夜好選擇(台北松山)| 30天滷肉飯
第12天,即時通訊軟體選擇 / 金峰滷肉飯 台北名店(台北中正)| 30天滷肉飯
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}